#version 450 core

layout(points) in;
layout(triangle_strip, max_vertices = 5) out;

in Varyings
{
    vec4 color;
} i[];

out Varyings
{
    vec4 color;
} o;

// 在点的位置画房子（n个顶点，使用三角形带可绘制n-2个三角形

void buildHouse(vec4 position)
{
    // 需要在EmitVertex函数调用之前赋值，因为
    // EmitVertex生成的顶点会使用这个out值
    o.color = i[0].color;

    // 左下
    gl_Position = position + vec4(-1.0, -1.0, 0.0, 0.0);
    EmitVertex();
    // 右下
    gl_Position = position + vec4(1.0, -1.0, 0.0, 0.0);
    EmitVertex();
    // 左上
    gl_Position = position + vec4(-1.0, 1.0, 0.0, 0.0);
    EmitVertex();
    // 右上
    gl_Position = position + vec4(1.0, 1.0, 0.0, 0.0);
    EmitVertex();
    // 顶部
    // 这个改成白色
    o.color = vec4(1.0, 1.0, 1.0, 1.0);
    gl_Position = position + vec4(0.0, 2.0, 0.0, 0.0);
    EmitVertex();

    EndPrimitive();
}

void main()
{
    buildHouse(gl_in[0].gl_Position);
}
